package model

import (
	"time"
	"user_srv/basic/config"
)

type VirtualGoodsOrder struct { //虚拟商品订单表
	Id           uint      `gorm:"column:id;type:bigint;comment:订单ID;primaryKey;not null;" json:"id"`                                            // 订单ID
	OrderSn      string    `gorm:"column:order_sn;type:varchar(65);comment:订单编号;not null;" json:"order_sn"`                                      // 订单编号
	UserId       uint      `gorm:"column:user_id;type:bigint;comment:用户ID;not null;" json:"user_id"`                                             // 用户ID
	GoodsId      uint      `gorm:"column:goods_id;type:int;comment:商品ID;not null;" json:"goods_id"`                                              // 商品ID
	Quantity     uint      `gorm:"column:quantity;type:int;comment:购买数量;not null;" json:"quantity"`                                              // 购买数量
	TotalPrice   float64   `gorm:"column:total_price;type:decimal(10, 2);comment:总价格;not null;" json:"total_price"`                              // 总价格
	CurrencyType uint      `gorm:"column:currency_type;type:tinyint;comment:支付货币类型：1-金币 2-钻石 3-积分;not null;" json:"currency_type"`               // 支付货币类型：1-金币 2-钻石 3-积分
	Status       uint      `gorm:"column:status;type:tinyint UNSIGNED;comment:订单状态：1-待支付 2-支付成功 3-支付失败 4-已取消;not null;default:1;" json:"status"` // 订单状态：1-待支付 2-支付成功 3-支付失败 4-已取消
	CreateTime   time.Time `gorm:"column:create_time;type:datetime;comment:创建时间;default:CURRENT_TIMESTAMP;" json:"create_time"`                  // 创建时间
	UpdateTime   time.Time `gorm:"column:update_time;type:datetime;comment:更新时间;default:CURRENT_TIMESTAMP;" json:"update_time"`                  // 更新时间
}

func (vgo *VirtualGoodsOrder) TableName() string {
	return "virtual_goods_order"
}
func (vgo *VirtualGoodsOrder) CreateOrder() error { //创建虚拟商品订单
	return config.DB.Create(&vgo).Error
}
func (vgo *VirtualGoodsOrder) UpdateOrder(where *VirtualGoodsOrder) error { //更新虚拟商品订单
	return config.DB.Model(&VirtualGoodsOrder{}).Where(where).Updates(&vgo).Error
}
func (vgo *VirtualGoodsOrder) GetOrderSn(where *VirtualGoodsOrder) error { //获取订单信息
	return config.DB.Where(where).Limit(config.Limit).Find(&vgo).Error
}
func (vgo *VirtualGoodsOrder) UpdateOrderStatus(where *VirtualGoodsOrder) error { //更新订单状态
	return config.DB.Model(&VirtualGoodsOrder{}).Where(where).Update("status", vgo.Status).Error

}
